home *** CD-ROM | disk | FTP | other *** search
-
- PLR2_mouse_control
- jsr ReadMouse
-
- move.l #SineTable,a0
- move.w PLR2s_angspd,d1
- move.w angpos,d0
- and.w #8190,d0
- move.w d0,PLR2s_angpos
- move.w (a0,d0.w),PLR2s_sinval
- adda.w #2048,a0
- move.w (a0,d0.w),PLR2s_cosval
-
- move.l PLR2s_xspdval,d6
- move.l PLR2s_zspdval,d7
-
- neg.l d6
- ble.s .nobug1
- asr.l #1,d6
- add.l #1,d6
- bra.s .bug1
- .nobug1
- asr.l #1,d6
- .bug1:
-
- neg.l d7
- ble.s .nobug2
- asr.l #1,d7
- add.l #1,d7
- bra.s .bug2
- .nobug2
- asr.l #1,d7
- .bug2:
-
- move.w ymouse,d3
- sub.w oldymouse,d3
- add.w d3,oldymouse
- ; asr.w #1,d3
- ; cmp.w #50,d3
- ; ble.s .nofastfor
- ; move.w #50,d3
- ;.nofastfor:
- ; cmp.w #-50,d3
- ; bge.s .nofastback
- ; move.w #-50,d3
- ;.nofastback:
-
- move.w STOPOFFSET,d0
- move.w d3,d2
- asl.w #7,d2
-
- add.w d2,PLR2_AIMSPD
- add.w d3,d0
- cmp.w #-80,d0
- bgt.s .nolookup
- move.w #-512*20,PLR2_AIMSPD
- move.w #-80,d0
- .nolookup:
- cmp.w #80,d0
- blt.s .nolookdown
- move.w #512*20,PLR2_AIMSPD
- move.w #80,d0
- .nolookdown
-
- move.w d0,STOPOFFSET
- neg.w d0
- add.w TOTHEMIDDLE,d0
- move.w d0,SMIDDLEY
- muls #320,d0
- move.l d0,SBIGMIDDLEY
-
- move.l #KeyMap,a5
- moveq #0,d7
- move.b forward_key,d7
-
- btst #6,$bfe001
- seq.s (a5,d7.w)
-
- move.b fire_key,d7
- btst #2,$dff016
- seq.s (a5,d7.w)
-
- bra PLR2_keyboard_control
-
- move.w #-20,d2
-
- tst.b PLR2_Squished
- bne.s .halve
- tst.b PLR2_Ducked
- beq.s .nohalve
- .halve
- asr.w #1,d2
- .nohalve
-
- btst #6,$bfe001
- beq.s .moving
- moveq #0,d2
- .moving:
-
- move.w d2,d3
- asl.w #4,d2
- move.w d2,d1
-
- move.w d1,ADDTOBOBBLE
-
- move.w PLR2s_sinval,d1
- move.w PLR2s_cosval,d2
-
- move.w d2,d4
- move.w d1,d5
- muls lrs,d4
- muls lrs,d5
-
- muls d3,d2
- muls d3,d1
- sub.l d4,d1
- add.l d5,d2
-
- sub.l d1,d6
- sub.l d2,d7
- add.l d6,PLR2s_xspdval
- add.l d7,PLR2s_zspdval
- move.l PLR2s_xspdval,d6
- move.l PLR2s_zspdval,d7
- add.l d6,PLR2s_xoff
- add.l d7,PLR2s_zoff
-
- tst.b PLR2_fire
- beq.s .firenotpressed
- ; fire was pressed last time.
- btst #6,$bfe001
- bne.s .firenownotpressed
- ; fire is still pressed this time.
- st PLR2_fire
- bra .donePLR2
-
- .firenownotpressed:
- ; fire has been released.
- clr.b PLR2_fire
- bra .donePLR2
-
- .firenotpressed
-
- ; fire was not pressed last frame...
-
- btst #6,$bfe001
- ; if it has still not been pressed, go back above
- bne.s .firenownotpressed
- ; fire was not pressed last time, and was this time, so has
- ; been clicked.
- st PLR2_clicked
- st PLR2_fire
-
- .donePLR2:
-
- bsr PLR2_fall
-
- rts
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PLR2_alwayskeys
- move.l #KeyMap,a5
- moveq #0,d7
-
- move.b next_weapon_key,d7
- tst.b (a5,d7.w)
- beq.s .nonextweappre
-
- ; tst.b PLR2_GunFrame
- ; bne.s .nonextweappre
-
- tst.b gunheldlast
- bne.s .nonextweap
- st gunheldlast
-
- moveq #0,d0
- move.b PLR2_GunSelected,d0
- move.l #PLAYERTWOGUNS,a0
-
- .findnext
- addq #1,d0
- cmp.w #9,d0
- ble.s .okgun
- moveq #0,d0
- .okgun:
- tst.w (a0,d0.w*2)
- beq.s .findnext
-
- move.b d0,PLR2_GunSelected
- bsr SHOWPLR2GUNNAME
-
- bra .nonextweap
-
- .nonextweappre:
- clr.b gunheldlast
- .nonextweap:
-
-
- move.b operate_key,d7
- move.b (a5,d7.w),d1
- beq.s .nottapped
- tst.b OldSpace
- bne.s .nottapped
- st PLR2_SPCTAP
- .nottapped:
- move.b d1,OldSpace
-
- move.b duck_key,d7
- tst.b (a5,d7.w)
- beq.s .notduck
- clr.b (a5,d7.w)
- move.l #playerheight,PLR2s_targheight
- not.b PLR2_Ducked
- beq.s .notduck
- move.l #playercrouched,PLR2s_targheight
- .notduck:
-
- move.l PLR2_Roompt,a4
- move.l ToZoneFloor(a4),d0
- sub.l ToZoneRoof(a4),d0
- tst.b PLR2_StoodInTop
- beq.s .usebottom
- move.l ToUpperFloor(a4),d0
- sub.l ToUpperRoof(a4),d0
- .usebottom:
-
- clr.b PLR2_Squished
- move.l #playerheight,PLR2s_SquishedHeight
-
- cmp.l #playerheight+3*1024,d0
- bgt.s oktostand2
- st PLR2_Squished
- move.l #playercrouched,PLR2s_SquishedHeight
- oktostand2:
-
- move.l PLR2s_targheight,d1
- move.l PLR2s_SquishedHeight,d0
- cmp.l d0,d1
- blt.s .notsqu
- move.l d0,d1
- .notsqu:
-
- move.l PLR2s_height,d0
- cmp.l d1,d0
- beq.s .noupordown
- bgt.s .crouch
- add.l #1024,d0
- bra .noupordown
- .crouch:
- sub.l #1024,d0
- .noupordown:
- move.l d0,PLR2s_height
-
- tst.b $27(a5)
- beq.s .notselkey
- st PLR2KEYS
- clr.b PLR2PATH
- clr.b PLR2MOUSE
- clr.b PLR2JOY
- .notselkey:
-
- tst.b $26(a5)
- beq.s .notseljoy
- clr.b PLR2KEYS
- clr.b PLR2PATH
- clr.b PLR2MOUSE
- st PLR2JOY
- .notseljoy:
-
- tst.b $37(a5)
- beq.s .notselmouse
- clr.b PLR2KEYS
- clr.b PLR2PATH
- st PLR2MOUSE
- clr.b PLR2JOY
- .notselmouse:
-
- lea 1(a5),a4
- move.l #PLAYERTWOGUNS,a2
- move.l GUN_OBJ,a3
- move.w #9,d1
- move.w #0,d2
- pickweap2
- move.w (a2)+,d0
- and.b (a4)+,d0
- beq.s notgotweap2
- move.b d2,PLR2_GunSelected
- move.w #0,ObjTimer(a3)
-
- ; move.l #TEMPSCROLL,SCROLLPOINTER
- ; move.w #0,SCROLLXPOS
- ; move.l #TEMPSCROLL+160,ENDSCROLL
- ; move.w #40,SCROLLTIMER
-
- ; d2=number of gun.
-
- bsr SHOWPLR2GUNNAME
-
- bra.s gogogogog
-
- notgotweap2
- addq #1,d2
- dbra d1,pickweap2
-
- gogogogog:
-
- ifeq CHEESEY
-
- tst.b $43(a5)
- beq.s .notswapscr
- tst.b lastscr
- bne.s .notswapscr2
- st lastscr
-
- not.b FULLSCRTEMP
-
- bra.s .notswapscr2
-
- .notswapscr:
- clr.b lastscr
- .notswapscr2:
-
- endc
-
- rts
-
- SHOWPLR2GUNNAME:
- moveq #0,d2
- move.b PLR2_GunSelected,d2
-
- move.l LINKFILE,a4
- add.l #GunNames,a4
- muls #20,d2
- add.l d2,a4
- move.l #TEMPSCROLL,a2
- move.w #19,d2
-
- .copyname:
- move.b (a4)+,d3
- bne.s .oklet
- move.b #32,d3
- .oklet:
- move.b d3,(a2)+
-
- dbra d2,.copyname
-
- move.l #TEMPSCROLL,d0
- jsr SENDMESSAGENORET
- rts
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- TURNSPD: dc.w 0
-
- PLR2_keyboard_control:
-
- move.l #SineTable,a0
-
- jsr PLR2_alwayskeys
- move.l #KeyMap,a5
-
- move.w STOPOFFSET,d0
- moveq #0,d7
- move.b look_up_key,d7
- tst.b (a5,d7.w)
- beq.s .nolookup
-
- sub.w #512,PLR2_AIMSPD
- sub.w #4,d0
- cmp.w #-80,d0
- bgt.s .nolookup
- move.w #-512*20,PLR2_AIMSPD
- move.w #-80,d0
- .nolookup:
- moveq #0,d7
- move.b look_down_key,d7
- tst.b (a5,d7.w)
- beq.s .nolookdown
- add.w #512,PLR2_AIMSPD
- add.w #4,d0
- cmp.w #80,d0
- blt.s .nolookdown
- move.w #512*20,PLR2_AIMSPD
- move.w #80,d0
- .nolookdown:
-
- move.b centre_view_key,d7
- tst.b (a5,d7.w)
- beq.s .nocent
-
- tst.b OLDCENT
- bne.s .nocent2
- st OLDCENT
-
- move.w #0,d0
- move.w #0,PLR2_AIMSPD
-
- bra.s .nocent2
-
- .nocent:
- clr.b OLDCENT
- .nocent2:
-
-
- move.w d0,STOPOFFSET
- neg.w d0
- add.w TOTHEMIDDLE,d0
- move.w d0,SMIDDLEY
- muls #320,d0
- move.l d0,SBIGMIDDLEY
-
- move.w PLR2s_angpos,d0
- move.w PLR2s_angspd,d3
- move.w #35,d1
- move.w #2,d2
- move.w #10,TURNSPD
- moveq #0,d7
- move.b run_key,d7
- tst.b (a5,d7.w)
- beq.s .nofaster
- move.w #60,d1
- move.w #3,d2
- move.w #14,TURNSPD
- .nofaster:
- tst.b PLR2_Squished
- bne.s .halve
- tst.b PLR2_Ducked
- beq.s .nohalve
- .halve:
- asr.w #1,d2
- .nohalve
-
- moveq #0,d4
-
- tst.b SLOWDOWN
- beq.s .nofric
- move.w d3,d5
- add.w d5,d5
- add.w d5,d3
- asr.w #2,d3
- bge.s .nneg
- addq #1,d3
- .nneg:
- .nofric:
-
- move.b turn_left_key,templeftkey
- move.b turn_right_key,temprightkey
- move.b sidestep_left_key,tempslkey
- move.b sidestep_right_key,tempsrkey
-
- move.b force_sidestep_key,d7
- tst.b (a5,d7.w)
- beq .noalwayssidestep
-
- move.b templeftkey,tempslkey
- move.b temprightkey,tempsrkey
- move.b #255,templeftkey
- move.b #255,temprightkey
-
- .noalwayssidestep:
-
- tst.b SLOWDOWN
- beq.s noturnposs2
-
-
- move.b templeftkey,d7
- tst.b (a5,d7.w)
- beq.s .noleftturn
- sub.w TURNSPD,d3
- .noleftturn
- move.l #KeyMap,a5
- move.b temprightkey,d7
- tst.b (a5,d7.w)
- beq.s .norightturn
- add.w TURNSPD,d3
- .norightturn
-
- cmp.w d1,d3
- ble.s .okrspd
- move.w d1,d3
- .okrspd:
- neg.w d1
- cmp.w d1,d3
- bge.s .oklspd
- move.w d1,d3
- .oklspd:
-
- noturnposs2:
-
- add.w d3,d0
- add.w d3,d0
- move.w d3,PLR2s_angspd
-
- move.b tempslkey,d7
- tst.b (a5,d7.w)
- beq.s .noleftslide
- add.w d2,d4
- add.w d2,d4
- asr.w #1,d4
- .noleftslide
- move.l #KeyMap,a5
- move.b tempsrkey,d7
- tst.b (a5,d7.w)
- beq.s .norightslide
- add.w d2,d4
- add.w d2,d4
- asr.w #1,d4
- neg.w d4
- .norightslide
-
- noslide2:
-
- and.w #8191,d0
- move.w d0,PLR2s_angpos
-
- move.w (a0,d0.w),PLR2s_sinval
- adda.w #2048,a0
- move.w (a0,d0.w),PLR2s_cosval
-
- move.l PLR2s_xspdval,d6
- move.l PLR2s_zspdval,d7
-
- tst.b SLOWDOWN
- beq.s .nofriction
-
- neg.l d6
- ble.s .nobug1
- asr.l #3,d6
- add.l #1,d6
- bra.s .bug1
- .nobug1
- asr.l #3,d6
- .bug1:
-
- neg.l d7
- ble.s .nobug2
- asr.l #3,d7
- add.l #1,d7
- bra.s .bug2
- .nobug2
- asr.l #3,d7
- .bug2:
-
- .nofriction
-
- moveq #0,d3
-
- moveq #0,d5
- move.b forward_key,d5
- tst.b (a5,d5.w)
- beq.s .noforward
- neg.w d2
- move.w d2,d3
-
- .noforward:
- move.b backward_key,d5
- tst.b (a5,d5.w)
- beq.s .nobackward
- move.w d2,d3
- .nobackward:
-
- move.w d3,d2
- asl.w #6,d2
- move.w d2,d1
- ; add.w d2,d1
- ; add.w d2,d1
- move.w d1,ADDTOBOBBLE
-
- move.w PLR2s_sinval,d1
- muls d3,d1
- move.w PLR2s_cosval,d2
- muls d3,d2
-
- sub.l d1,d6
- sub.l d2,d7
- move.w PLR2s_sinval,d1
- muls d4,d1
- move.w PLR2s_cosval,d2
- muls d4,d2
- sub.l d2,d6
- add.l d1,d7
-
- tst.b SLOWDOWN
- beq.s .nocontrolposs
- add.l d6,PLR2s_xspdval
- add.l d7,PLR2s_zspdval
- .nocontrolposs:
- move.l PLR2s_xspdval,d6
- move.l PLR2s_zspdval,d7
- add.l d6,PLR2s_xoff
- add.l d7,PLR2s_zoff
-
- move.b fire_key,d5
- tst.b PLR2_fire
- beq.s .firenotpressed
- ; fire was pressed last time.
- tst.b (a5,d5.w)
- beq.s .firenownotpressed
- ; fire is still pressed this time.
- st PLR2_fire
- bra .doneplr2
-
- .firenownotpressed:
- ; fire has been released.
- clr.b PLR2_fire
- bra .doneplr2
-
- .firenotpressed
-
- ; fire was not pressed last frame...
-
- tst.b (a5,d5.w)
- ; if it has still not been pressed, go back above
- beq.s .firenownotpressed
- ; fire was not pressed last time, and was this time, so has
- ; been clicked.
- st PLR2_clicked
- st PLR2_fire
-
- .doneplr2:
-
- bsr PLR2_fall
-
- rts
-
-
-
- PLR2_JoyStick_control:
-
- jsr _ReadJoy2
- bra PLR2_keyboard_control
-
- PLR2_clumptime: dc.w 0
-
- PLR2clump:
-
- movem.l d0-d7/a0-a6,-(a7)
- move.l PLR2_Roompt,a0
- move.w ToFloorNoise(a0),d0
-
- move.l ToZoneWater(a0),d1
- cmp.l ToZoneFloor(a0),d1
- bge.s THERESNOWATER2
-
- cmp.l PLR2_yoff,d1
- blt.s THERESNOWATER2
-
- tst.b PLR2_StoodInTop
- bne.s THERESNOWATER2
-
- move.w #6,d0
- bra.s THERESWATER2
-
- THERESNOWATER2:
-
- tst.b PLR2_StoodInTop
- beq.s .okinbot
- move.w ToUpperFloorNoise(a0),d0
- .okinbot:
-
- move.l LINKFILE,a0
- add.l #FloorData,a0
- move.w 2(a0,d0.w*4),d0 ; sample number.
-
- subq #1,d0
- blt.s nofootsound2
-
- THERESWATER2:
- move.w d0,Samplenum
- move.w #0,Noisex
- move.w #100,Noisez
- move.w #80,Noisevol
- move.w #$fff8,IDNUM
- clr.b notifplaying
- move.b PLR2_Echo,SourceEcho
- jsr MakeSomeNoise
-
- nofootsound2:
- movem.l (a7)+,d0-d7/a0-a6
-
- rts